Go with the Flow: Compositional Abstractions for Concurrent Data Structures (Extended Version)

نویسندگان

  • Siddharth Krishna
  • Dennis Shasha
  • Thomas Wies
چکیده

Concurrent separation logics have helped to significantly simplify correctness proofs for concurrent data structures. However, a recurring problem in such proofs is that data structure abstractions that work well in the sequential setting are much harder to reason about in a concurrent setting due to complex sharing and overlays. To solve this problem, we propose a novel approach to abstracting regions in the heap by encoding the data structure invariant into a local condition on each individual node. This condition may depend on a quantity associated with the node that is computed as a fixpoint over the entire heap graph. We refer to this quantity as a flow. Flows can encode both structural properties of the heap (e.g. the reachable nodes from the root form a tree) as well as data invariants (e.g. sortedness). We then introduce the notion of a flow interface, which expresses the relies and guarantees that a heap region imposes on its context to maintain the local flow invariant with respect to the global heap. Our main technical result is that this notion leads to a new semantic model of separation logic. In this model, flow interfaces provide a general abstraction mechanism for describing complex data structures. This abstraction mechanism admits proof rules that generalize over a wide variety of data structures. To demonstrate the versatility of our approach, we show how to extend the logic RGSep with flow interfaces. We have used this new logic to prove linearizability and memory safety of nontrivial concurrent data structures. In particular, we obtain parametric linearizability proofs for concurrent dictionary algorithms that abstract from the details of the underlying data structure representation. These proofs cannot be easily expressed using the abstraction mechanisms provided by existing separation logics.

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

Modular and Incremental Analysis of Concurrent Software Systems

Modularization and abstraction are the keys to practical verification and analysis of large and complex systems. We present in an incremental methodology for the automatic analysis and verification of concurrent software systems. Our methodology is based on the theory of abstract interpretation. We first propose a compositional data flow analysis algorithm that computes invariants of concurrent...

متن کامل

ICC + + { A C + + Dialect for High Performance Parallel ComputingA

ICC++ is a new C++ concurrent dialect which allows sequential/parallel program versions to be maintained with single source, the construction of concurrent data abstractions, convenient expression of irregular and ne-grained concurrency, and supports high performance implementations. ICC++ provides annotations for potential concurrency, facilitating both sharing source with sequential programs ...

متن کامل

Concurrent Validity of Functional Gait Assessment, Timed Up and Go, and Gait Speed Tests in the Persian Community-Dwelling Elderly

Objectives: The purpose of this study was to evaluate the concurrent validity of the Farsi version of Functional Gait Assessment (FGA), Timed Up & Go (TUG), and Gait Speed tests in Persian communitydwelling older adults. Methods: Subjects were 100 males in falling or no falling history group (50 subjects in each group). Subjects were community-dwelling adults aged 60-90 years who were living...

متن کامل

Serving Web Content with Dynamic Process Networks in Go

This paper introduces webpipes, a compositional web server toolkit written using the Go programming language as part of an investigation of concurrent software architectures. This toolkit utilizes an architecture where multiple functional components respond to requests, rather than the traditional monolithic web server model. We provide a classification of web server components and a set of typ...

متن کامل

Library Abstraction for C / C + + Concurrency — extended version —

When constructing complex concurrent systems, abstraction is vi-tal: programmers should be able to reason about concurrent li-braries in terms of abstract specifications that hide the implementa-tion details. Relaxed memory models present substantial challengesin this respect, as libraries need not provide sequentially consistentabstractions: to avoid unnecessary synchronisa...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

عنوان ژورنال:
  • CoRR

دوره abs/1711.03272  شماره 

صفحات  -

تاریخ انتشار 2017